package com.wkbb.basic.service;

import com.github.pagehelper.PageInfo;
import com.wkbb.basic.model.DeviceBox;
import com.wkbb.common.dto.basic.DeviceBoxDto;
import com.wkbb.common.base.BaseService;

import java.util.List;

/**
 * @author Alger Yang
 */
public interface DeviceBoxService extends BaseService<DeviceBox> {

    /**
     * 批量根据ID删除智慧盒子
     *
     * @param ids 智慧盒子ID列表
     */
    void deleteBoxBatchByIds(List<Long> ids) throws Exception;

    /**
     * 获取智慧盒子列表
     *
     * @param orgId        组织ID
     * @param orgName      组织名称（模糊查询）
     * @param name         名称（模糊）
     * @param deviceCode   设备编号（模糊）
     * @param deviceSerial 序列号（模糊）
     * @param deviceMac    设备MAC地址（模糊）
     * @param scene        使用场景
     * @param active       是否激活
     */
    List<DeviceBoxDto> getDeviceBoxList(Long orgId, String orgName, String name, String deviceCode, String deviceSerial, String deviceMac, Short scene, Boolean active);

    /**
     * 获取智慧盒子分页列表
     *
     * @param orgId        组织ID
     * @param orgName      组织名称（模糊查询）
     * @param name         名称（模糊）
     * @param deviceCode   设备编号（模糊）
     * @param deviceSerial 序列号（模糊）
     * @param deviceMac    设备MAC地址（模糊）
     * @param scene        使用场景
     * @param active       是否激活
     * @param pageNo       页码
     * @param pageSize     每页条数
     */
    PageInfo<DeviceBoxDto> getDeviceBoxPageList(Long orgId, String orgName, String name, String deviceCode, String deviceSerial, String deviceMac, Short scene, Boolean active, Integer pageNo, Integer pageSize);

    /**
     * 获取智慧盒子详情
     *
     * @param id 编号
     */
    DeviceBoxDto getDeviceBoxInfo(Long id);

    /**
     * 获取智慧盒子详情
     *
     * @param deviceCode 设备编号
     */
    DeviceBoxDto getDeviceBoxInfo(String deviceCode);

    /**
     * 向巨龙盒子同步添加人员
     *
     * @param personId 用户PersonId
     * @param picUrl   人员图片
     */
    void addBoxPerson(String personId, String picUrl);

    /**
     * 从巨龙盒子删除人员
     *
     * @param personId 用户PersonId
     */
    void deleteBoxPerson(String personId,Long orgId);

    /**
     * 激活巨龙盒子
     *
     * @param name      操作人
     * @param deviceBox 盒子信息
     * @param active    是否激活
     */
    boolean updateBoxActive(String name, DeviceBox deviceBox, Boolean active) throws Exception;

}
